#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/1/25
# @Author: Sunny
# ========================

#1、使用字典推导式将下面字符串格式的数据，改写成字典类型的数据
# cook_str = 'BIDUPSID=D0727533D7147B7;PSTM=1530348042;BAIDUID=B1005C9BC2EB28;sugstore=0;__cfduid=d0a13458f8ac2a;BD_UPN=12314353;ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402'

#2、请描述什么是可迭代对象？什么是迭代器，迭代器和生成器的区别

"""
1、现在有一个列表   li = [11,21,4,55,6,67,123,54,66,9,90,56,34,22], 
请将大于5的数据过滤出来，然后除以2取余数，结果放到新的列表中（匿名函数结合filter去做）
"""
# li = [11,21,4,55,6,67,123,54,66,9,90,56,34,22]
# def work1(li):
#     data_list = list(filter(lambda x:x>5,li))
#     return [i % 2 for i in data_list]
# print(work1(li))

# li1 =[i % 2for i in li if i>5]
# print(li1)





"""
2、定义一个可以使用send传入域名，自动生成一个在前面加上http://，在后面加上路径/user/login的url地址，
生成器最多可以生成5次数据，生成5条数据之后再去生成，则报错StopIteration
使用案例：
例如:
res = g.send('www.baidu.com')
生成数据res为：http://www.baidu.com/user/logim'
"""
# def work2():
#     a=1
#     i=yield
#     while a<=5:
#         i =  yield 'http://'+i+'/user/login'
#         a+=1

def work2():
    name = yield
    for i in range(5):
        name = yield 'http://' + name + '/user/login'


g = work2()
next(g)
print(g.send('www.baidu1.com'))
print(g.send('www.baidu2.com'))
print(g.send('www.baidu3.com'))
print(g.send('www.baidu4.com'))
print(g.send('www.baidu5.com'))
# print(g.send('www.baidu6.com'))


"""
3、算法面试题

有一个正整数列表(数据是无序的,并且允许有相等的整数存在),
编写能实现下列功能的函数，传入列表和正整数x，返回下面要求的三个数据
def func(array, x)
    '''逻辑代码'''
    return count, li, new_array
1、统计并返回在列表中,比正整数x大的数有几个(相同的数只计算一次)，并返回----->返回值中的的count
2、计算列表中比正整数X小的所有偶数，并返回列表  ----------->返回值中的li
3、将列表中比正整数X小的偶数去掉,未去掉的数添加到新列表中，并返回新列表 ------->返回值中的new_array


"""

# def func(array, x):
#     #统计比整数数x大的数
#     count =len(set(list(filter(lambda i:i>x,array))))
#     #统计列表中比正整数小的偶数
#     li = [a for a in array if a % 2==0 and a<x]
#     #统计新列表
#     new_arrey = [b for b in array if b not in li]
#     return count,li,new_arrey
#
# 
# li = [1,2,2,3,4]
# print(func(li,3))



"""
4、定义一个函数实现以下功能，第一个元素是数据标识，第二个元素的数值必须大于等于50才返回，
不够50往后累加加到最后如果不够50也直接返回，因为没有可加的数据了
例子1 ：
a = [[1,3],[2,51],[3,49],[4,42],[5,42]] #入参 
a1 = [[2,54],[4,91],[5,42]] #返回 
例子2：
b = [[1,50],[2,5],[3,10],[4,42],[5,42],[6,10]] #入参
b1 = [[1,50],[4,57],[6,52]] #返回
"""

# a = [[1,3],[2,51],[3,49],[4,42],[5,42]]
# b = [[1,50],[2,5],[3,10],[4,42],[5,42],[6,10]]

# def work3(array):
#     new_arrey =[]
#     sum = 0
#     for i in array:
#         if sum<50:
#             sum = sum+i[1]
#             if sum>=50 or i == array[-1]:
#                 new_arrey.append([i[0],sum])
#                 sum = 0
#         elif sum >=50:
#             new_arrey.append([i[0], sum])
#     return new_arrey
#
# print(work3(b))

# def work3(array):
#     new_array =[]
#     sum = 0
#     for i in array:
#         sum = sum+i[1]
#         if sum >=50 or i == array[-1]:
#             new_array.append([i[0],sum])
#             sum = 0
#     return new_array
#
# print(work3(b))







